Optimization of network service based on an existing service

ABSTRACT

A network system can receive, from a user device of a requesting user, a query related to a first service. If the network system determines that a first service provider is in progress of providing a second service for the requesting user, the network system can identify, based on a service location of the second service, a plurality of entities that provide items available for selection in association with the first service. The network system can further determine whether to select the first service provider to fulfill the request for the first service based on an estimated first service duration associated with the first service and an estimated duration remaining for the second service. The first service duration can be estimated based on respective timing information associated one or more items selected by the requesting user. The network system can update a route for the first service provider.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/391,908, filed Aug. 2, 2021, which is a continuation of U.S. patentapplication Ser. No. 16/589,495, filed Oct. 1, 2019, now U.S. Pat. No.11,079,250, which is a continuation of U.S. patent application Ser. No.15/728,268, filed Oct. 9, 2017, now U.S. Pat. No. 10,458,808, whichclaims the benefit of U.S. Provisional Patent Application No.62/442,280, filed Jan. 4, 2017, all of the aforementioned priorityapplications being hereby incorporated by reference in their respectiveentireties.

BACKGROUND

A conventional network service may allow a requesting user to requestservice associated with a selection of one or more items from an entityto be fulfilled by a service provider. However, the requesting user islimited to selecting items offered by a single entity. In other words,the requesting user usually must first select an entity before selectingavailable items offered by that entity in connection with the servicerequest. This may lead to an undesirable user experience.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure herein is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings in which likereference numerals refer to similar elements, and in which:

FIG. 1 is a block diagram illustrating an example network system forproviding a network service over a given geographic region, inaccordance with examples described herein;

FIG. 2 is a block diagram illustrating another example network systemfor providing a network service over a given geographic region, inaccordance with examples described herein;

FIG. 3 is a flow chart describing an example method of operating anexemplary network system, according to examples described herein;

FIG. 4 is a flow chart describing another example method of operating anexemplary network system, according to examples described herein;

FIG. 5 is a block diagram illustrating an example user device executinga designated user application for communicating with the networkservice, according to examples described herein;

FIG. 6 is a block diagram illustrating an example provider deviceexecuting a designated service provider application for communicatingwith the service, according to examples described herein; and

FIG. 7 is a block diagram illustrating a computer system upon whichexamples described herein may be implemented.

DETAILED DESCRIPTION

A network service, which is implemented by a computer system(s)(referred to herein as a “network system” for purposes of simplicity),is provided herein that links service providers (e.g., drivers,couriers, autonomous vehicles (AVs), etc.) with requesting usersthroughout a given geographic region (e.g., a metroplex such as the SanFrancisco Bay Area). In doing so, the network service communicates witha pool of service providers over the given geographic region, eachoperating a vehicle for providing services and one or more computingdevices (“service provider devices” or “provider devices”). The networksystem receives requests for services (e.g., a transport service, adelivery service, etc.) from requesting users via a designated user orclient application (“user application”) executing on the users' mobilecomputing devices (“user devices”). In response, the network systemidentifies one or more available service providers to fulfill eachuser's request.

In various aspects, a query can be submitted from a user device of arequesting user. The query can include a desired service locationdetermined using location data generated by the user device or inputtedby the requesting user via the user application. In one example, thequery can be submitted in response to the user launching or activatingthe user application. The query can also be submitted in response to theuser's selection of a user interface feature (e.g., a soft selectionfeature for “Search” or “Submit”). In response, the network system canidentify a plurality of available nearby entities (e.g., entitieslocated within a predetermined distance from the service location, orwithin a specified region, etc.) and/or a number of available itemsoffered by those entities. As referred to herein, an entity cancorrespond to an individual, a company, a group, a vendor or merchant,etc., that provides one or more goods or items for sale (e.g., a chef, abaker, a restaurant, a café, a store, etc.). The user device can alsotransmit data corresponding to a request for service that includes therequesting user's selection of one or more selected items from theavailable items. In response, the network system can transmit datacorresponding to selected items to each of a sub-set of the plurality ofentities (e.g., entities that provide the one or more selected items).The network system can also select a service provider(s) to fulfill therequest for service and determine a route for the selected serviceprovider(s). In one example, the route can include route segments to thelocations of each of the sub-set of entities (e.g., in a specifiedorder) and a route segment to the service location. For example, theroute can include a first route segment from a location (e.g., currentlocation of the selected service provider) to the location of a firstone of the sub-set of entities, a second route segment from the firstone of the sub-set of entities to a second one of the sub-set ofentities, etc. The route can further include a last route segment fromthe location of one of the sub-set of entities to the service location.Using the network service, a requesting user can view available itemswithout the need to first select or be restricted to one particularentity from the plurality of nearby entities. The requesting user canalso select items from multiple entities in a single request.

According to embodiments, the network system associates timinginformation or timing data (referred to herein as “preparation time(s)”)with individual entities and/or with items offered by individualentities in the given geographic region in order to manage the networkservice within the given geographic region. In certain contexts, such asfor food or restaurant vendors or merchants, a preparation time caninclude one or more of the following: (i) an estimated duration of timefor someone to receive requests, (ii) an estimated duration of time forsomeone to process requests, (iii) an estimated duration of time forsomeone to gather ingredients for the selected items, (iv) an estimatedduration of time for someone to prepare the selected items, or (v) anestimated duration of time for someone to ready the selected items forpickup by service providers. In other examples, the preparation timescan include other durations of time (e.g., buffer times between thelisted durations, etc.). The preparation times can be determined basedon historical data. For instance, the network system can maintain, inone or more databases, historical records of the preparation timesassociated with each selected item and analyze the historical records(e.g., using statistical modeling, machine learning, etc.) to estimateor determine each item's preparation time. The preparation times canalso be determined dynamically, and/or periodically, using real-timedata received from the entities and/or based on the current date or timewhen the preparation times are determined. For example, the networksystem can receive, from an entity, real-time data regarding currentlypending requests received by the entity to estimate or determine apreparation time associated with an item offered by the entity.Furthermore, the preparation times can be pre-determined using datacollected through trial runs in preparing the offered items. Forexample, trial runs for one or more items can be conducted andpreparation times can be measured and recorded based on the trial runs.The preparation times can also include anticipated or estimated delaysassociated with, for example, order backlogs at entities. In someexamples, the preparation times can be adjusted based on estimated oranticipated demand (or current demand and/or number of requested placedduring a duration of time) or other circumstances (e.g., a sportingevent, weather conditions, etc.). For instance, the network system canadjust preparation times to take into account delays associated withexpected backlogs of requests received by entities during high-demandperiods.

In various examples, the network system receives a query from a userdevice operated by a requesting user to view available items (e.g.,restaurant menu items) offered by a plurality of available entities. Thequery can include data regarding a service location. The servicelocation can be determined based on geo-location data generated by theuser device (e.g., GPS, GLONASS, or Galileo data etc.). The servicelocation can also be inputted by the user through the user applicationor auto-populated based on historical data pertaining to the user (e.g.,a home location, a favorite location, etc.). The network system canidentify the plurality of available entities based on the servicelocation (e.g., within a certain distance from the service location,within the same geographic region or sub-region as the service location,within a certain estimated time of travel from the service location,etc.). In examples herein, each entity can be associated with a locationthat the network system can access to determine whether an entity shouldbe one that is available in response to a query or request.

In some examples, the network system can also identify available itemsfor selection by the requesting user from items offered by the pluralityof entities. The identification of available items can be based onpreparation times associated with the offered items. As one example, therequesting user can enter a desired service time (e.g., a desired timefor ordered items to arrive at the service location, such as now or infifty minutes, etc.). The network system can identify a sub-set of theitems offered by the plurality of entities as the available items basedon the desired service time and estimated service durations (e.g.,estimated time for an item to arrive at the service location). Theestimated service durations can include, or be estimated based on,respective preparation times associated with the items. For instance, ifan item can be prepared in time to arrive at the service location around(e.g., within a predefined window of time) or at the desired servicetime, the network system can identify the item as an available item. Theidentification of available items can also be based on factors such asinventory at the plurality of available entities (e.g., inventory ofavailable raw materials or ingredients), user preferences and otherprofile information (e.g., food allergies), menu item information (e.g.,information indicating that an item is unsuitable for travel time oflonger than 20 minutes), etc. In doing so, the network system canidentify and cause the user application to selectively display thoseavailable items that are particularly suitable for selection in responseto the requesting user's query.

According to embodiments, the user device operated by the requestinguser can receive content data corresponding to the available items andinformation related thereto (e.g., preparation times, values associatedwith the available items, entity information, user reviews, and ratings,etc.) from the network system. The user device can display one or moremenus or lists of the available items for viewing and selection by therequesting user. In response to the requesting user's selection of oneor more items, the user device can generate and transmit datacorresponding to a request to the network system.

In various examples, the network system can receive the request datafrom a user device corresponding to the user's selection of one or moreselected items from the available items. In response, the network systemcan process the request data, identify which items were selected,identify the appropriate entities (e.g., a sub-set of the plurality ofavailable entities) that provide those items (e.g., using an identifierof the item and/or the identifier of the entity), and transmitinformation regarding the one or more selected items to the appropriateentities. Such information can allow the entities to begin preparing theone or more selected items. In addition, the network system candetermine an optimal route for a service provider to take in fulfillingthe requested service. The route can include route segments to each ofthe locations of the sub-set of entities (e.g., a first route segmentfrom the current location of the selected service provider to a firstone of the sub-set of entities, a second route segment from the firstone of the sub-set of entities to a second one of the sub-set ofentities, etc.) and a route segment to the service location (e.g., alast route segment from the last one of the sub-set of entities to theservice location). The network system can determine the optimal routebased on the respective preparation times associated with the one ormore selected items. For instance, the network system can determine theoptimal route such that the selected service provider arrives at anentity at or around the time when the entity is estimated to havefinished preparing a corresponding selected item. Furthermore, thenetwork system can determine an entity order (e.g., sequence of entitiesthat the service provider is to travel to on the route) based on thepreparation times of the one or more selected items. For instance, afirst entity can be sequenced before a second entity based on thenetwork system's determination that a first item(s) to be prepared bythe first entity is estimated to be prepared before a second item(s) tobe prepared by the second entity, based on the preparation timesassociated with the first and second items. The network system can alsooptimize the route based on travel time and/or travel distance. In doingso, the network system can minimize wait time by the service provider(e.g., waiting for items to be prepared at the respective entitieslocations) and by the requesting user. The network system can furtherleverage the respective preparation times of the one or more selecteditems to inform the service provider of an appropriate time to departfor the entities or to inform the service provider of an estimated waittime upon arriving at an entity. In various aspects, the network systemcan also determine the optimal route based on traffic information (e.g.,historical traffic patterns, real-time traffic data, predicted trafficpatterns, etc.).

According to embodiments, the network system can select a serviceprovider(s) from a pool of service providers in the geographic region tofulfill the service request from the requesting user. The network systemcan communicate with provider devices operated by service providers toreceive data including data regarding location (e.g., geo-location datagenerated by the provider device) and status (e.g., indicating whether aservice provider is available to fulfill a service request). The networksystem can select a service provider to fulfill the service requestbased on service provider's location and status. For example, thenetwork system can select a service provider that is located proximately(e.g., within a mile) to one or more entities and/or to the servicelocation. The network system can also select a service provider based ona provider type associated with the service provider (e.g., automobile,motorcycle, bicycle, on-foot, etc.). For instance, the network systemcan select a service provider based on the service provider's providertype that is determined to particularly suit the service location,entity locations, and/or a route (or a portion thereof) determined bythe network system (e.g., route to the entity locations and to theservice location). For instance, if the service location, entitylocations, and/or the route are located in a particularly dense urbanenvironment, the network system can determine to select a serviceprovider having a bicycle provider type. On the other hand, if the routeincludes a segment over a highway or an expressway, the network systemcan select a service provider having an automobile provider type.

According to embodiments, the network system can determine one or morevalues (e.g., cost, surcharge, etc.) associated with each of theavailable items, each of the plurality of entities, and/or the requestedservice. The one or more values can be dynamically determined based onan estimated amount of supply and/or an estimated amount of demand inthe geographic region for each of the available items, each of theplurality of entities, and/or the requested service. For instance, thenetwork system can estimate a likelihood or number of requests forservice that may be made at any given time or interval based on a numberof active users (e.g., users interacting with user applications) in thegiven geographic region (or in a sub-region within the given geographicregion). The network system can also base the determination on real-timedata received from the plurality of entities that indicate, for example,a number of backlogged requests. The network system can also determinethe one or more values based on extrapolation, analysis, or machinelearning algorithms performed on historical data. For instance, thenetwork system can estimate the likelihood or number of requests forservice that may be made based on historical data collected for aspecific day and/or time (e.g., amount of requests or interactions withthe user applications during a specific time and/or day, such asweekdays between noon and 1 PM, etc.) or based on occurrence of events(e.g., a sporting event such as a football game).

In various aspects, the dynamically determined one or more values can beassociated with each item available for selection by the requestinguser. In some examples, the network system can determine a dynamic valueassociated with the service request, separate and apart from the itemsselected by the user. Such a dynamically determined value can beassociated with expedited or high priority processing, handling, andpreparation by the entities and/or service providers, thereby resultingin an accelerated service time. Furthermore, the network system canadjust one or more dynamically determined values in exchange for theuser's selection of items ahead of the desired service time (e.g.,pre-order) or in exchange for the user's acceptance of an alternateservice time (e.g., off-peak service time).

In some examples, the network system can create and maintain userprofiles that store information regarding users can be utilized by thenetwork system to provide an improved user experience managing thenetwork service. For instance, a user profile can store thecorresponding user's preferences and data (e.g., favorite items, usualorder times, preset or favorite service locations, allergies, dislikeditems, etc.) that can be used in improving the user experience inrequesting services using the network service. For instance, using userprofile information, the network system can determine suggestionsregarding available items (e.g., suggested entities, suggested items,suggested item pairings) to the user. In various aspects, the networksystem can also create and maintain entity profiles that storeinformation regarding entities (e.g., entity location, historical orderdata, etc.) that can be used by the network system to manage the networkservice.

According to embodiments, to fulfill a request for a first service(e.g., a delivery service), the network system can leverage a secondservice (e.g., a transport service, a delivery service). The secondservice can be a currently-in-progress service or can be a service thatis planned or scheduled for a future time. In some examples, the networksystem can determine that a service provider is in progress of providingthe second service to the requesting user. In response, the networksystem can determine or retrieve a second service duration indicating aduration of time remaining for the second service. The system can alsoestimate a first service duration related to the first service (e.g.,estimated time to fulfill the request for the first service by matchinga nearby service provider with the request). The first service durationcan be estimated based on respective preparation times associated withone or more items selected by the requesting user for the first service.The network system can select a service mode for the first service basedon the first service duration and the second service duration.

For example, the network system can determine that a second serviceprovider is currently in progress of providing a second service for auser to a service location. In response to this determination, thenetwork system can identify a plurality entities and/or a number ofavailable items offered by the plurality of entities based oninformation related to the first service (e.g., service location, route,service duration, etc.). Content data corresponding to the plurality ofentities and/or the number of available items can be transmitted to auser device operated by the user for viewing and selection. The networksystem can receive a request for a first service from the user device,the request including data regarding the user's selection of one or moreselected items from the available items. The network system can select afirst service mode and a second service mode for the first service. Inresponse to selecting the first service mode, the network system canidentify a first service provider to fulfill the first service. Thenetwork system, can determine, for the first service provider, anoptimal route that includes route segments to each of a subset of theplurality of entities and a route segment to the service location. Inresponse to selecting the second service mode, the network system canupdate a route of the second service such that the updated routeincludes segments to each of a subset of the plurality of entities and asegment to the service location. The network system can transmit dataregarding the updated route and/or additional information (e.g., pickupinformation) to the second service provider.

In certain implementations, the network system can select between thefirst service mode and the second service mode based on a comparison ofthe first service duration and the second service duration. Forinstance, in response to determining that the first service duration islonger (e.g., by a threshold value) than the second service duration,the network system can select the first service mode. In contrast, inresponse to determining that the second service duration is longer thanthe first service duration (e.g., by a threshold value), the networksystem can select the second service mode. In some examples, thedetermination to select the first service mode and the second servicemode can also be based on evaluation of the updated route for the secondservice. For instance, if updated route represents a significantadditional detour compared to the original route (e.g., in terms ofdistance, time, etc.) the system can select the first service mode forfulfill the request for the first service.

According to embodiments, the requesting user can be prompted forconfirmation within a user application to continue with the selection ofone or both of the service modes. For example, the dedicated userapplication for the first service can display a prompt informing theuser that the second service mode (e.g., re-routing the second serviceprovider that is scheduled or in-progress of providing the secondservice) can be selected. The user can select (e.g., by activating auser interface feature within the dedicated user application) to confirmthe selection of the second service mode to fulfill the first requestedservice. The user can also select to reject the selection of the secondservice mode. If the user rejects the selection of the second servicemode, the network system can cancel the selection of the second servicemode and continue to fulfill the request for the first service in thefirst service mode.

In various aspects, the network system can maintain communications withone or more additional systems related to the second service in order toleverage the second service in fulfilling the first service. In someexamples, the network system and the one or more additional systemscommunicate with a single user application executing on the user device.The single user application allows the user to arrange both the firstservice and the second service. In other examples, the network systemcommunicates with a first user application for requesting the firstservice and the one or more additional systems communicate with a seconduser application for requesting the second service. The first userapplication and the second user application can share data (e.g.,locally on the user device or over a network) to facilitate interactionsbetween the first service and the second service (e.g., leveraging thesecond service in fulfilling a request for the first service, etc.).

According to embodiments, the one or more additional networks canperform one or more steps related to the second service during theprocess to fulfill the first service by leveraging the second service(e.g., re-routing the second service provider etc.). For instance, theone or more additional systems can determine and update the secondservice duration (e.g., amount of time remaining for the second service,estimated time of arrival at the service location, etc.). The networksystem can access real-time data regarding the second service durationby retrieving data from a cache or a database of the one or moreadditional systems. In addition, the one or more additional systems canupdate the route for the second service provider and transmit datacorresponding to the updated route to a provider device of the secondservice provider.

Among other benefits, examples described herein improve existing mappingand routing techniques, and technology that connect service providerswith requesting users in connection with a network service. Whereas inconventional approaches, requesting users wishing to select itemsprovided by multiple entities must submit separate queries and requestsover the network, users interacting with an exemplary network systemdescribed herein can submit a single query and request. In response, thenetwork system is configured to select a single service provider tofulfill such a request by utilizing timing information associated withitems for selection by requesting users. In this manner, network andcomputing resources are more efficiently utilized by the network systemdescribed herein since resource-intensive processes to identify andselect among candidate service providers and routing the selectedservice provider need only be performed once. The methods describedherein have the additional benefit of more efficiently managing serviceproviders and reducing their wait times at entities that provide theitems selected by users. In addition, conventional approaches generateroutes that are sub-optimal and can result in excessive wait timesleading to additional resources (e.g., other service providers) needingto be dispatched by the network system to complete the service request.The network system described herein can avoid such waste of resourcesand the associated computing resources needed to perform such actions bygenerating routes for the selected service provider that takes intoaccount timing information, including real-time data, associated withitems provided by the entities. As a result, the routes are generatedand updated such that the selected service provider arrives at theappropriate times at each entity.

Furthermore, the examples described herein achieve a technical effect ofimproving user experience in interacting and requesting services throughthe network service. For example, by associating estimated preparationtimes with items offered by nearby entities, the network system allowsusers to select items offered by a plurality of entities for eachrequest for service. In this manner, the user is not restricted orlimited to requesting items from a single selected entity for eachrequest for service. In addition, by selecting appropriate serviceproviders and determining optimal routes based at least in part on thepreparation times, the network system is able to effectively andefficiently manage resources such as service providers in fulfillingusers' requests for service over the geographic region. Some examplebenefits in this regard include reduced wait times for service providersand increased efficiency.

Additionally, in conventional network services, a requesting user may bescheduled for or in progress of two different services at or around thesame time. This may lead to conflicts or undesirable effects. Forinstance, a first service may require the presence of the requestinguser, who may be in progress of a second service. Using conventionalnetwork services may result in the first service provider being forcedto wait an excessive amount of time for the requesting user to completethe second service. This decreases efficiency and results in waste.Furthermore, the conventional network service cannot leverage existingresources such as in progress or scheduled instances of another serviceto fulfill requests for service. By leveraging a second in-progress orscheduled service to fulfill the request for service, the network systemis able to avoid these shortcomings and improve user experience. Forinstance, the network system is able to determine an appropriate servicemode based on a service duration of the second service. The requestinguser can be prompted to confirm to, for example, re-route a secondservice provider for the second service to fulfill the first service. Indoing so, the network system can ensure that the first service isperformed in an appropriate manner in view of the service duration ofthe second service. For example, the network system can optimize thefirst service such that the first service provider arrives at theservice location at an appropriate time in view of the service durationof the second service (e.g., at the same time or shortly after thesecond service provider arrives at the service location). As anotherexample, the network system can select or suggest a service mode inwhich the second service provider is re-routed to fulfill the firstservice in addition to completing the second service. Furthermore, inaddition to improving user experience, the network system can alsobetter manage resources such as service providers by, for example,reducing wait times for service providers and increasing efficiency.

As used herein, a computing device refers to devices corresponding todesktop computers, cellular devices or smartphones, personal digitalassistants (PDAs), laptop computers, virtual reality (VR) or augmentedreality (AR) headsets, tablet devices, television (IP Television), etc.,that can provide network connectivity and processing resources forcommunicating with the system over a network. A computing device canalso correspond to custom hardware, in-vehicle devices, or on-boardcomputers, etc. The computing device can also operate a designatedapplication configured to communicate with the network service.

One or more examples described herein provide that methods, techniques,and actions performed by a computing device are performedprogrammatically, or as a computer-implemented method. Programmatically,as used herein, means through the use of code or computer-executableinstructions. These instructions can be stored in one or more memoryresources of the computing device. A programmatically performed step mayor may not be automatic.

One or more examples described herein can be implemented usingprogrammatic modules, engines, or components. A programmatic module,engine, or component can include a program, a sub-routine, a portion ofa program, or a software component or a hardware component capable ofperforming one or more stated tasks or functions. As used herein, amodule or component can exist on a hardware component independently ofother modules or components. Alternatively, a module or component can bea shared element or process of other modules, programs or machines.

Some examples described herein can generally require the use ofcomputing devices, including processing and memory resources. Forexample, one or more examples described herein may be implemented, inwhole or in part, on computing devices such as servers, desktopcomputers, cellular or smartphones, personal digital assistants (e.g.,PDAs), laptop computers, VR or AR devices, printers, digital pictureframes, network equipment (e.g., routers) and tablet devices. Memory,processing, and network resources may all be used in connection with theestablishment, use, or performance of any example described herein(including with the performance of any method or with the implementationof any system).

Furthermore, one or more examples described herein may be implementedthrough the use of instructions that are executable by one or moreprocessors. These instructions may be carried on a computer-readablemedium. Machines shown or described with figures below provide examplesof processing resources and computer-readable mediums on whichinstructions for implementing examples disclosed herein can be carriedand/or executed. In particular, the numerous machines shown withexamples of the invention include processors and various forms of memoryfor holding data and instructions. Examples of computer-readable mediumsinclude permanent memory storage devices, such as hard drives onpersonal computers or servers. Other examples of computer storagemediums include portable storage units, such as CD or DVD units, flashmemory (such as carried on smartphones, multifunctional devices ortablets), and magnetic memory. Computers, terminals, network enableddevices (e.g., mobile devices, such as cell phones) are all examples ofmachines and devices that utilize processors, memory, and instructionsstored on computer-readable mediums. Additionally, examples may beimplemented in the form of computer-programs, or a computer usablecarrier medium capable of carrying such a program.

Some examples are referenced herein in context of an autonomous vehicle(AV) or self-driving vehicle (SDV). An AV or SDV refers to any vehiclewhich is operated in a state of automation with respect to steering andpropulsion. Different levels of autonomy may exist with respect to AVs.For example, some vehicles may enable automation in limited scenarios,such as on highways, provided that drivers are present in the vehicle.More advanced AVs can drive without any human assistance from within orexternal to the vehicle. Such vehicles are often required to makeadvanced determinations regarding how the vehicle behaves givenchallenging surroundings of the vehicle environment.

System Description

FIG. 1 is a block diagram illustrating an example network system incommunication with user devices, service provider devices, and entities.Network system 100 can manage a network service within a givengeographic region (e.g., (e.g., a metroplex such as the San FranciscoBay Area). The network system 100 communicates with provider devices 190operated by service providers 192 and with user devices 195 operated byusers 197. Using the network service provided by the network system 100,users 197 can view and select among available items offered by aplurality of entities. Furthermore, users 197 can request a servicerelated to the user's selection of one or more selected items of theavailable items. The network system 100 can identify one or more serviceproviders 192 to provide the requested service to a service location. Inaddition, the network system 100 communicates with entities 185 totransmit data related to the user's 197 request for the one or moreselected items to the entities 185 and/or receive data regarding statusinformation and the like. As used herein, the user device 195 and theprovider device 190 can comprise mobile computing devices (e.g.,smartphones, tablet computers, smart watches, etc.), VR or AR headsets,desktop computers, on-board computing systems of vehicles, and the like.In addition, the service provider 192 and provider device 190 can beon-board computing systems of autonomous vehicles.

The network system 100 can include preparation time estimation 105,value engine 110, query processing 115, provider routing and selectionengine 120, request processing 125, entity interface 135, user deviceinterface 140, provider device interface 145, and database 150.

The network system 100 can include a user device interface 140 tocommunicate with user devices 195 over one or more networks 180 via auser application 196. According to examples, a requesting user 197wishing to utilize the network service can launch or interact with userapplication 196 on a corresponding user device 195. The user application196 can submit a query 198 to the network system 100 over network 180.The query 198 can include data regarding a service location. The userdevice 195 can transmit query 198 automatically in response to theuser's launching or activating of the user application 196 on the userdevice 195. In some examples, the user application 196 can store adefault service location such that the query 198 transmitted in responseto the user's launching or activating the user application 196 includesdata regarding the default service location. The default servicelocation can be the user's 197 home location, work location, orlast-used service location. The query 198 can also be submitted inresponse to a user selection of or interaction with a user interfacefeature within the user application 196. The user 197 can also provide aservice location by entering an address, searching for a nearby point ofinterest, or selecting a location on an interactive map within the userapplication 196.

According to embodiments, query processing 115 receives the query 198and, in response, generates available items 116 corresponding to aplurality of available items that can be selected by the user 197 inassociation with a service request. The query processing 115 canidentify a plurality of nearby entities 185. The query processing 115can identify nearby entities 185 based on the service location (e.g.,entities located within a certain distance from the service location,entities located within a certain estimated time of travel from theservice location, etc.) and the current time (or desired service time)(e.g., entities that are currently within their operating hours, etc.).

The query processing 115 can retrieve, from database 150 or an externaldatabase, data corresponding to the items offered by each of theplurality of nearby entities 185 (e.g., item data 153). In someexamples, the query processing 115 can identify all items offered by theplurality of nearby entities as available items 116 to the requestinguser device 195. In other examples, the query processing 115 canidentify a sub-set of the offered items as available items 116. Theidentification of available items 116 from all items offered by theplurality of nearby entities 185 can be based on respective preparationtimes associated with the items. For instance, the query 198 can includea desired service time entered by the user 197 that indicates a desiredtime for ordered items to arrive at the service location. The queryprocessing 115 can identify an offered item as an available item 116based on the determination that the item can be prepared (e.g., asindicated by the preparation time associated with the item) in time toarrive at the service location before or around the desired servicetime.

The query processing 115 can further identify items offered by theplurality of nearby entities as available items 116 based on factorssuch as inventory at the nearby entities 185, user preferences and otherprofile information, and/or information regarding each of the offereditems. For instance, the query processing 115 can retrieve (e.g., fromdatabase 150 or from the nearby entities 185 (via entity interface 135))data corresponding to inventory of available raw materials oringredients at each of the nearby entities 185. The query processing 115can identify only items for which the nearby entities 185 havesufficient remaining inventory of raw materials as the available items116. As another example, the query processing 115 can retrieve (e.g.,from database 150 or from user device 195) data corresponding to userpreferences including, for example, data regarding non-desired items(e.g., food allergies). The user preferences can be stored in database150 as part of user profiles 156 or as part of user application data onuser device 195. As a further example, the query processing 115 canretrieve (e.g., from database 150 or from nearby entities 185) dataregarding the offered items such as data corresponding to constraints onservice for each offered item (e.g., information indicating that aparticular item is unsuitable for travel time of longer than twentyminutes).

According to embodiments, the user device interface 140 transmits dataregarding the available items 116 to the requesting user device 195. Thedata can be transmitted as content data 141 for display on the userdevice 195 within the user application 196. For instance, the userdevice interface 140 can include a user content engine to generate thecontent data 141 based on the available items. The user application 196can display the available items 116 for viewing and selection by therequesting user 197. In various aspects, content data 141 correspondingto the available items 116 includes value information (e.g., values 111generated by value engine 110). Accordingly, the requesting user 197 canview value information associated with each of the available items 116in making his or her selection among the available items 116.

According to embodiments, the request processing 125 receives, from therequesting user device 195 via the user device interface 140, request199 corresponding to a request for service. The request 199 can includedata regarding the requesting user's selection of one or more selecteditems from the available items 116 in association with the request forservice. The request processing 125 can also receive value 111 from thevalue engine 110 and entity data from the entities 185 (via the entityinterface 135). In response to receiving the request 199, the requestprocessing 125 can generate processed requests 128 to each of a sub-setof entities (e.g., those entities 185 providing or offering the one ormore items selected by the requesting user 197 in request 199). Theprocessed requests 128 can include information to instruct each of thesub-set of entities to begin preparing the items selected by therequesting user 197. For instance, the processed request 128 to aparticular entity 185 can include information such as an item selectedby the requesting user 197 (and any options or customizations to theselected item) and any additional information relevant to the request(e.g., time to begin preparations, item or order priority, etc.). Inresponse, the sub-set of entities 185 can prepare the selected items inaccordance with the additional information.

In certain examples, the request processing 125 can generate statusinformation 126 based on data received at the entities 185. The statusinformation 126 can be transmitted to the user devices 195 by the userdevice interface 140 to enable the user devices 195 to display currentstatus of the orders. For instance, a user device 195 can display userinterface features to show or graphically represent the progress of asubmitted request 199.

According to embodiments, the network system 100 can include valueengine 110 for generating values 111 corresponding to the availableitems and/or selected items. The values 111 can include data componentsthat indicate a value for each of the available items and/or selecteditems. In certain implementations, the values 111 can be dynamicallydetermined based on real-time data. For instance, values 111 can bedynamically determined based on real-time data corresponding to a numberof active users 197 in the given geographic region or near the servicelocation (e.g., within a sub-region of the given geographic region thatincludes the service location, within a certain distance or radius ofthe service location, etc.). The number of active users 197 can bedetermined or estimated by the network system 100 (e.g., by user deviceinterface 140) based on the number of users 197 interacting with userapplications 196 near the service location. The value engine 110 canalso determine the values 111 based on real-time data such as entitydata 186 that indicates, for example, a number of requests received bythe entities 185 and/or for a specific item. For instance, values foritems offered by a specific entity can be increased to account for ahigh number of requests received by the entity. As another example,value corresponding to a specific item can also be increased to accountfor a high number of requests for the specific item. In some examples,the value engine 110 can also determine the values 111 based onreal-time data regarding current events (e.g., a sporting event). Forinstance, values 111 can be increased based on the determination that apopular event is scheduled for a particular time that may led to anincrease in the number of request for items.

According to embodiments, the value engine 110 can also determine thevalues 111 based on analysis of historical data such as historical valuedata 152. For instance, historical value data 152 can indicate, for aspecific day and/or time (e.g., Fridays at 7 P.M.), information relevantto the determination of values 111 (e.g., number of requests by aspecific entity and/or for a specific item and/or, total number ofrequests received by the network system 100, number of active users ofthe network system 100, etc.). Historical value data 152 can alsoinclude historical values (e.g., average or median values on Fridays at7 P.M.) for each of the available and/or selected items on which thedetermination of the values 111 can be based. The value engine 110 canalso perform analysis, such as regression modeling, extrapolation,and/or machine learning algorithms, of the historical value data 152 todetermine the values 111.

According to embodiments, the network system 100 can include preparationtime estimation 105 to estimate or determine preparation times 106associated with items offered by entities. The preparation times 106 canbe determined based on historical data such as historical preparationtime 151 retrieved from database 150. The historical preparation time151 can include data corresponding to average or median preparationtimes associated with each item offered by entities measured over aperiod of time. For instance, the historical preparation time 151 canindicate that over the past month, the average historical preparationtime for a particular item is six minutes. The preparation timeestimation 105 can estimate the preparation time 106 associated with theparticular item based on the historical average of six minutes. In someexamples, the preparation time estimation 105 can determine thepreparation time 106 by performing machine learning techniques (e.g.,using an artificial neural network), regression algorithms, Markovanalysis, and the like on historical data such as historical preparationtime 151. According to embodiments, the preparation time estimation 105can also estimate preparation time 106 based on real-time data,including, for example, entity data 186 received from the entities 185.The entity data 186 can include data corresponding to, for example,pending or received orders at the entity.

According to embodiments, the network system 100 can include a providerrouting and selection engine 120 for determining an optimal route forthe selected service provider in fulfilling the request for service. Inthis context, an optimal route can be a route that is optimized based onvarious parameters and pieces of information available to the networksystem 100 including, for example, preparation times 106 of the one ormore selected items, information regarding the request 199 from therequesting user 197, and the like. For instance, the provider routingand selection engine 120 can optimize the route based on the preparationtimes of the one or more selected items indicated in the request 199. Inthis manner, the network system 100 can schedule the times of arrival ofthe selected service provider at each entity on the route in view of thepreparation times of the one or more selected items. For example, basedon the preparation times, the provider routing and selection engine 120can optimize the route such that the selected service provider arrivesat the location of an entity at or around the time that a selected itembeing prepared by the entity is estimated to be ready for pick-up. Inthis manner, wait times for both the service provider 192 and therequesting user 197 can be minimized. As another example, the providerrouting and selection engine 120 can optimize the route by determiningan entity order for the route (e.g., order of entities visited by theselected service provider on the route). This determination can also bebased on the preparation times associated with the one or more selecteditems. For example, in response to a request for service for twoselected items—a first item offered by a first entity and a second itemoffered by a second entity—the provider routing and selection engine 120can determine the route such that the first entity is ordered ahead ofthe second entity based on based on the preparation times associatedwith the first and second selected items. In this manner, the wait timesfor the service provider 192 and the requesting user 197 can be furtherreduced. In addition, the provider routing and selection engine 120 candynamically update the route based on real-time data from the entities185 regarding status of the one or more selected items (e.g.,preparation status, etc.). Accordingly, the route for the selectedservice provider can be dynamically updated to take into account, forexample, any delays at the entities 185 in preparing the one or moreselected items. Furthermore, the provider routing and selection engine120 can further optimize the route to minimize the travel distanceand/or travel time. For example, the provider routing and selectionengine 120 can take into account traffic information to optimize theroute to reduce travel distance and/or travel time. The provider routingand selection engine 120 can also be configured to dynamically balancethe various factors and parameters being optimized (e.g., traveldistance, travel time, service provider wait time, requesting user waittime, item idle time (e.g., time after items is prepared and beforebeing picked up by the selected service provider), etc.) in determiningthe optimal route. For instance, during a time period of serviceprovider shortage, the provider routing and selection engine 120 candetermine the optimal route such that service provider wait time isweighted more heavily in the optimization process.

To determine the optimal route, the provider routing and selectionengine 120 can receive information (e.g., provider routing and selectiondata 154) from the database 150. The provider routing and selection data154 can include, for example, data regarding preparation times of theone or more selected items stored in the database 150. The providerrouting and selection engine 120 can further receive traffic information(e.g., real-time traffic data, predicted traffic information, etc.) overthe network (e.g., from a third party) to determine the optimal route.In addition, the provider routing and selection engine 120 can receiverequest information 127 from the request processing 125 to determine theoptimal route. The request information 127 can include informationregarding the one or more selected items, the identification and/orlocations of the entities offering the one or more selected items, andthe like.

According to embodiments, the provider routing and selection engine 120is further configured to select a service provider from a plurality ofservice providers 192 to fulfill the requested service. The selectioncan be based on respective locations of the plurality of serviceproviders 192 with respect to the service location and/or to one or moreentities. As such, the provider routing and selection engine can receiveprovider data 193 transmitted by the provider devices 190 that includes,for example, real-time location information generated by the providerdevices. The provider routing and selection engine 120 can select aservice provider in close proximity to the service location and/or toone or more entities to, for example, reduce travel time. The providerrouting and selection engine 120 can further select a service providerbased on a route 121 (or a portion thereof) determined by the providerrouting and selection engine 120 for the requested service. Forinstance, the plurality of service providers 192 can include serviceproviders of a number of provider classes (e.g., automobile, autonomousvehicle, motorcycle, bicycle, on-foot, etc.) and the selection of aservice provider can include a determination of an appropriate providerclass based on the optimal route. For example, if the optimal routeincludes route segments on a freeway, highway, or expressway, theprovider routing and selection engine 120 can determine the appropriateprovider class as an automobile provider class. In contrast, if theroute 121 includes route segments within a dense urban zone, theprovider routing and selection engine 120 can determine the appropriateprovider class as a bicycle or on-foot provider class. Subsequently, theprovider routing and selection engine 120 can select a service providerfrom the plurality of service providers 192 based on the determinedprovider class. In this manner, the network system 100 can furtheroptimize the fulfillment of the requested service by selecting anappropriate service provider based on the route 121.

In various aspects, the provider routing and selection engine 120 candetermine a route 121. The route 121 can be transmitted to the selectedservice provider to follow in fulfilling the requested service. Theroute 121 can include route segments to each of the locations of thesub-set of entities (e.g., a first route segment from the currentlocation of the selected service provider to a first one of the sub-setof entities, a second route segment from the first one of the sub-set ofentities to a second one of the sub-set of entities, etc.) and a routesegment to the service location (e.g., a last route segment from a lastone of the sub-set of entities to the service location). In response tocertain requests, the route 121 can include two route segments (e.g., afirst route segment from the current location of the selected serviceprovider to an entity and a second route segment from the entity to theservice location).

In some implementations, the provider routing and selection engine 120can optimize the route 121 based on preparation times associated withthe one or more selected items of the request 199. For example, theprovider routing and selection engine 120 can optimize the route 121 tominimize wait times for the selected service provider as well as therequesting user. For example, based on the preparation times, theprovider routing and selection engine 120 can determine the optimalroute such that the selected service provider arrives at the location ofan entity at or around the time that a selected item being prepared bythe entity is estimated to be ready for pick-up. The provider routingand selection engine 120 can further optimize the route 121 bydetermining an order of entities on the route based on the preparationtimes of the one or more selected items. The network system canadditionally optimize the route to reduce travel distance and/or time.In addition, the network system can receive real-time data from entitiesto update the optimal route. For example, based on real-time dataindicating delays at one particular entity, the provider routing andselection engine 120 can update the route 121 to account for the delays(e.g., re-order the order of entities or delaying the route segment tothe particular entity experiencing the delays). In this manner, theroute 121 can remain optimal based on up-to-date information.

According to embodiments, the provider routing and selection engine 120can generate service provider information 122 that may be relevant tothe selected service provider's fulfillment of the request service, suchas expected wait times at each of the entities, confirmation orauthentication codes for use at each of the entities, contactinformation of the requesting user, any additional information relevantto the service location (e.g., a gate code or an intercom number), etc.

According to embodiments, the database 150 of the network system 100 canstore information such as user profiles 156, entity profiles 157, andmenu item profiles 158. A user profile 156 can store information such asa corresponding user's preferences in items offered by entities (e.g.,item preference, favorite entities, favorite item genre, preferred itempairings, disliked items, food allergies, etc.). The user profile 156can also store the user's most frequently used or favorite servicelocations (e.g., work, home, etc.). In addition, the user profile 156can store information regarding the user's past service requestssubmitted to the network system 100 (e.g., items requested, amountspent, etc.). Using information stored in the user profiles 156, thenetwork system 100 can optimize the corresponding users' 197experiences. For instance, the network system 100 can determine item orentity suggestions based on information stored in the user profiles 156.

The entity profiles 157 can store information such as an entity'sperformance record with respect to preparing items in accordance withthe items' associated preparation times. For instance, an entity profile157 may indicate that an entity, based on historical records, hasprepared items within their respective preparation times 95% of thetime. This information can be transmitted to user device 195 for viewingby a requesting user 197 while the user is viewing available items forselection. In addition, entity profiles 157 can store information suchas user reviews and/or ratings of the entities' performance and qualityof the items offered by the entities. The menu item profiles 158 canstore information related to each item offered by entities 185 in thegiven geographic region managed by the network system 100. Suchinformation includes, for example, an associated preparation time,ingredient information, and historical value data, etc.

FIG. 2 is a block diagram illustrating another example network systemfor providing a first network service over a given geographic region, inaccordance with examples described herein. Similar to network system 100of FIG. 1 , network system 200 can manage the first network service in agiven geographic region. In addition, the network system 200 canmaintain communications with one or more additional network systems 270.The one or more additional network systems 270 can manage a secondnetwork service. The network system 200 communicates with providerdevices 290 operated by service providers 292 and with user devices 295operated by users 297. The user devices 295 can execute two userapplications—a first user application 296-1 for interacting with thefirst network service and a second user application 296-2 forinteracting with the second network service. The first user application296-1 and the second user application 296-2 can share data locally onthe user devices 295 (e.g., by accessing shared libraries or databases).In other examples, the user devices 295 can execute a single unifieduser application that is capable of interacting with both the firstnetwork service and the second network service. Using the first networkservice provided by the network system 200, users 297 can view andselect among available items offered by a plurality of entities.Furthermore, users 297 can request a first service related to the user'sselection of one or more selected items of the available items throughthe first user application 296-1.

As described herein, the network system 200 and the one or moreadditional network systems 270 can communicate and operate together toleverage a scheduled or in progress instance of the second networkservice for a requesting user to fulfill a request for the first servicefrom the requesting user. In particular, the network system 200 canselect to operate in a first service mode or a second service mode infulfilling the first network service to avoid wait times for serviceproviders and the requesting user as well as to best utilize resourcessuch as service providers providing an in progress or scheduled service.In the first service mode, the network system 200 identifies a firstservice provider among a plurality of service providers 292 to fulfillthe request for first service. In the second service mode, the networksystem 200 (or the one or more additional network systems 270) re-routesa second service provider 277 scheduled to provide or in progress ofproviding the second network service for the requesting user such thatthe second service provider can fulfill the requested first service inaddition to the second service.

In addition, the network system 200 can communicate with entities 285 totransmit data related to the user's 297 request for the one or moreselected items to the entities 285 and/or receive data regarding statusinformation and the like. As used herein, the user device 295 and theprovider device 290 can comprise mobile computing devices (e.g.,smartphones, tablet computers, smart watches, etc.), VR or AR headsets,desktop computers, on-board computing systems of vehicles, and the like.In addition, the service provider 292 and provider device 290 can beon-board computing systems of autonomous vehicles.

The network system 200 can include preparation time estimation 205,value engine 210, query processing 215, provider routing and selectionengine 220, request processing 225, network system interface 230, entityinterface 235, user device interface 240, provider device interface 245,and database 250.

According to embodiments, the network system interface 230 communicateswith the one or more additional network systems 270 to receiveinformation related to the second service (e.g., service location 271and service duration 272). The network system interface 230 can alsotransmit information related to the first service (e.g., requestinformation 227) to the one or more additional network systems 270.

In various implementations, the one or more additional network systems270 can determine or estimate information related to the second servicesuch as a service duration 272. The service duration 272 can indicate orrepresent an estimated amount of time remaining for the second servicefor the requesting user (e.g., estimated time of arrival at the servicelocation). The service duration 272 can be determined based on trafficinformation (e.g., real-time traffic data, historical traffic data,predicted traffic patterns, etc.), route information, and the like.

As described herein, the network system 200 can base certaindeterminations regarding the first service on information provided bythe one or more additional network systems 270. For example, queryprocessing 215 can determine a plurality of entities and/or availableitems 216 offered by the plurality of entities based on the servicelocation 271 of the second service. In addition, the request processing225 can select the first service mode or the second service mode basedon, for example, service duration 272 indicating a time remaining of thesecond service.

According to embodiments, the request processing 225 can select thefirst service mode or the second service mode during the query andrequest processing process. For example, if the network system 200determines that the requesting user 297 does not have a future or inprogress session of the second service, the request processing 225 candetermine to proceed with the request 299 in the first service mode.Similarly, the request processing 225 can select the first service modebased on a comparison of the service duration 272 related to the secondservice and an estimated service duration for the first service. Theestimated service duration for the first service can be an estimation ofthe time the request 299 can be fulfilled in the first service mode. Assuch, the estimate service duration for the first service can becomputed based on the preparation times associated with the one or moreselected items indicated in the request 299 and estimated travel timesof a selected service provider (e.g., to each of a sub-set of entitiesthat offer the one or more selected items and to the service location).If the estimate service duration for the first service is longer thanservice duration 272 (e.g., the second service is scheduled to becompleted prior to the first service in the first service mode), therequest processing 225 can select to proceed with the first service inthe first service mode. On the other hand, if the estimated serviceduration for the first service is shorter than service duration 272(e.g., the selected service provider will arrive at the service locationprior to the service being completed), the request processing 225 canselect the second service mode.

In some examples, the network system 200 can generate content datacorresponding to a user confirmation to proceed with the selection ofthe second service mode. In some instances, because the second servicemode can involve re-routing the second service provider fulfilling anexisting or scheduled service, the requesting user may wish to benotified when the first service proceeds in the second service mode.Accordingly, the network system 200 (e.g., user device interface 240)can generate content corresponding to such a confirmation to betransmitted to the user device 295. The requesting user 297 can confirmthe selection of the second service mode through the first userapplication 296-1.

In the first service mode, the provider routing and selection engine 220selects a first service provider from a plurality of service providers292. The provider routing and selection engine 220 can determine a route221 for the first service provider. The route 221 can include segmentsto each of a sub-set of the plurality of entities and a segment to theservice location. The selection of the first service provider can bebased on the determined route 221. The provider routing and selectionengine 220 can also generate service provider information 222, which caninclude information relevant to the first service provider's fulfillmentof the request 299 (e.g., anticipated wait times at each of the entitiesvisited on the route, authentication codes to authenticate the serviceprovider with each of the entities, contact information of therequesting user, etc.).

In the second service mode, the network system 200 transmits requestinformation 227 to the one or more additional network systems 270. Basedon the request information 227, the one or more additional networksystems 270 can generate updated route 273 for the second serviceprovider. The updated route 273 can include segments to each of thesub-set of entities and a segment to the service location 271. In thismanner, the network system 200, together with the one or more additionalnetwork systems 270, can re-route the second service provider 277 tofulfill the request 299.

Methodology

FIG. 3 is a flow chart describing an example method of operating anexemplary network system, according to examples described herein. In thebelow discussion of FIG. 3 , reference may be made to features andexamples shown and described with respect to FIGS. 1 and 2 .Furthermore, the process described with respect to FIG. 3 may beperformed by an example network system such as the one shown anddescribed with respect to FIGS. 1 and 2 .

Referring to FIG. 3 , a network system (e.g., network system 100 of FIG.1 or network system 200 of FIG. 2 ) receives a query from a user device(e.g., user device 195 of FIG. 1 or user device 295 of FIG. 2 ) operatedby a user over a network (311). The query can be transmitted by the userdevice in response to user interactions with a user applicationexecuting on the user device (e.g., opening or launching the userapplication, selecting or activating a user interface feature, etc.).The query received from the user device can include a service location311-1 and/or a desired service time 311-2. The service location 311-1can correspond to a location associated with a service (e.g., a locationat which a requested service is to be fulfilled). The service location311-1 can be determined based on geo-location data generated by the userdevice (e.g., GPS, GLONASS, or Galileo data etc.), entered by the userthrough the user application (e.g., by entering an address, by searchinga name or location, by selecting on an interactive map, etc.), orauto-populated based on historical data pertaining to the user (e.g., ahome location, a work location, a favorite location, etc.). The desiredservice time 311-2 can correspond to a desired time at which therequested service is to be performed. By selecting a desired servicetime 311-2, a requesting user can schedule a service to be performed fora specific time. The network system can make determinations for variousaspects of the requested service for the requesting user based on theservice location 311-1 and the desired service time 311-2 (e.g.,identifying nearby entities and/or available items in response to thequery).

In the examples described herein, the network system can identify aplurality of entities and/or available items offered by the plurality ofentities (312). The network system can identify nearby entities based onthe service location 311-1. For instance, the network system canidentify entities that are within a certain distance from the servicelocation or within a certain estimated time of travel away from theservice location. The network system can also identify entities based onthe desired service time 311-2. For example, the network system canexclude entities that are not within their operating hours at or aroundthe desired service time.

In certain implementations, the network system can also identify asub-set of items offered by the plurality of entities as availableitems. The identification of available items can be based on preparationtimes associated with the items offered by the plurality of entities.For example, the network system can exclude items that will not beprepared by the entities in time to arrive at the service location at oraround the desired service time 311-2. The available items can also beidentified based on data from the entities (e.g., inventory data). Forinstance, the network system can exclude an item for which an entitydoes not have sufficient inventory. Additionally, the available itemscan be identified based on preferences of the requesting user (e.g.,stored in a user profile). For example, the network system can excludeitems for which the requesting user has previously indicated to beexcluded from future requests (e.g., disliked items) or items determinedto be inappropriate for the requesting user (e.g., due to a foodallergy) based on the requesting user's profile.

According to embodiments, the network system can determine dynamicvalues for each of the available items (313). The values can bedynamically determined in real-time based on one or more of a number offactors including a likelihood or number of requests for servicereceived by the network system at any given time, a number of usersinteracting with the user application on the users' respective userdevices, number of requests received by each entity, historical valuedata, information related to the weather and/or current events, etc. Forinstance, during a time period in which the network system receives alarge number of requests, values corresponding to the items offered bythe plurality of entities can be increased. On the other hand, if thenetwork system receives a low number of requests during another timeperiod, values corresponding to the items offered by the plurality ofentities can be decreased. As another example, if one particular entityreceives a large number of requests, values corresponding to itemsoffered by that particular entity can be increased. Furthermore, valuescan be adjusted based on current or anticipated weather conditions(e.g., values can be increased during inclement weather) or currentevents (e.g., values can be increased before or during a sportingevent). In this manner, the network system can optimally determinevalues for items offered by the plurality of entities based on a varietyof relevant factors.

In the examples described herein, the network system can transmit dataregarding the available items and/or the plurality of entities to therequesting user device (314). Data transmitted to the requesting userdevice can include content data for displaying content regarding theavailable items on the user devices. For example, data transmitted bythe network system can cause or enable the user devices to display oneor more lists or menus of available items. The requesting user can viewand interact with the one or more lists to select items in associationwith making a service request. The content data can further include datato enable the requesting user device to display the dynamicallydetermined values of each of the available items (e.g., as part of theone or more lists or menus of available items). Furthermore, the contentdata can include relevant information such as user reviews or ratings ofavailable items and/or each of the plurality of entities, images of theavailable items, etc. Additionally, the content data can include one ormore suggested items for the requesting user based on the requestinguser's preferences. For example, the content data can include a pairingsuggestion indicating a plurality of items that the requesting user mayenjoy at the same time (e.g., a food pairing or a food-drink pairing,etc.).

According to embodiments, the network system can receive a request fromthe user device (315). The request can include data regarding the user'sselection of one or more selected items from the available items forservice to the service location 311-1. The request can be generated bythe user device in response to the requesting user's interaction withthe user application (e.g., using a “Submit” or “Place Order” userinterface feature).

In various examples, in response to receiving the request at step 315,the network system transmits request information to a sub-set of theplurality of entities (316). The sub-set of the plurality of entitiescan be entities that offer the one or more selected items. For instance,for a request for service that includes the user's selection of a firstitem and a second item, the sub-set of the plurality of entities caninclude a first entity offering the first item and a second entityoffering the second item. The network system can transmit relevantrequest information to each of the sub-set of entities. For example, thefirst entity can receive request information (e.g., specific itemsselected, desired preparation completion time, etc.) regarding the firstselected item and the second entity can receive request informationregarding the second selected item. In some examples, the requestinformation includes a desired preparation completion time. The desiredpreparation completion time can be a time for the entity to completepreparation of a corresponding item that is estimated by the networksystem to ensure that the request is fulfilled in a timely manner (e.g.,at or around the desired service time 311-2).

According to embodiments, the network system further determines anoptimal route for a service provider in fulfilling the request forservice (317). This step may be performed, for example, by serviceprovider routing and selection engine 120 and 220 of FIGS. 1 and 2 ,respectively. In particular, the optimal routes can be determined basedon preparation times associated with the one or more selected items to,for example, minimize wait times for the selected service provider aswell as the requesting user. For example, based on the preparationtimes, the network system can determine the optimal route such that theselected service provider arrives at the location of an entity at oraround the time that a selected item being prepared by the entity isestimated to be ready for pick-up. The network system can furtheroptimize the route by determining an order of entities on the routebased on the preparation times of the selected items. The network systemcan additionally optimize the route to reduce travel distance and/ortime. In addition, the network system can receive real-time data fromentities to update the optimal route. For example, based on real-timedata indicating delays at one particular entity, the network system canupdate the optimal route to account for the delays (e.g., re-order theorder of entities or delaying the route segment to the particular entityexperiencing the delays). In this manner, the route for the serviceprovider can remain optimal based on up-to-date information.

In various aspects, the network system can select a service providerfrom a plurality of service providers to fulfill the request for service(318). For instance, the network system can select a service providerlocated proximately to an entity and/or the service location.Additionally, the network system can select a service provider based onthe optimal route. For instance, the network system can select a bicycleservice provider based on the optimal route being within a dense urbanenvironment. In contrast, if the optimal route includes one or moresegments over a freeway or highway, the network system can select anautomobile service provider.

According to embodiments, the network system can transmit datacorresponding to the optimal route to the selected service provider(319). The data corresponding to the optimal route can include contentdata, such as map data to enable or cause a provider device of theselected provider to display route guidance or an interactive map thatincludes the optimal route. In addition, the network system can transmitservice provider information (e.g., service provider information 122 and222 of FIGS. 1 and 2 , respectively) to the provider device. The serviceprovider information 122 can include information useful to the serviceprovider in fulfilling the requested service such as anticipated waittimes at each of the entities visited on the route, authentication codesto authenticate the service provider with each of the entities, contactinformation of the requesting user, etc.

FIG. 4 is a flow chart describing another example method of operating anexemplary network system, according to examples described herein. In thebelow discussion of FIG. 4 , reference may be made to features andexamples shown and described with respect to FIGS. 1 and 2 .Furthermore, the process described with respect to FIG. 4 may beperformed by an example network system such as the one shown anddescribed with respect to FIGS. 1 and 2 .

Referring to FIG. 4 , a network system (e.g., network system 100 of FIG.1 or network system 200 of FIG. 2 ) receives a query (e.g., query 198and 298 of FIGS. 1 and 2 , respectively) in association with a firstnetwork service from a user device (e.g., user device 195 of FIG. 1 oruser device 295 of FIG. 2 ) operated by a requesting user over a network(411).

In certain implementations, the network system can determine whether asecond service provider is scheduled to provide or in progress ofproviding a second network service to the requesting user to a servicelocation (412). In some examples, the network system can make thisdetermination based on the received query, which can indicate that thesecond service is in progress (or scheduled to be provided) for therequesting user. For instance, a first user application for the firstservice on the requesting user device may access data shared by orcommunicate locally (e.g., within the user device) with a second userapplication for the second service to receive data indicating that thesecond service is in progress or scheduled for the requesting user. Inresponse, the first user application can generate the query thatincludes an indication regarding the second service. In other examples,one user application is used to request and interact with the firstservice and the second service. In addition to or as an alternative, thenetwork system can communicate with one or more additional systems thatmanage the second service to determine whether the second service is inprogress or scheduled for the requesting user. The network system canmaintain communications with the one or more additional systems toleverage the second service in fulfilling the requested first service.In other implementations, a single network system can manage both thefirst and the second services.

According to embodiments, the network system can make a number ofadditional determinations based on the received query and/or informationrelated to the second service (if in progress or if scheduled). Forexample, the received query can include information regarding a servicelocation. The service location can be related to the second service ormay be selected or entered by the requesting user for the first service.Alternatively, the network system can communicate with the one or moreadditional systems to determine the service location of the secondservice. Based on the service location, the network system can identifya plurality of nearby entities and/or available items offered by theplurality of entities. Furthermore, the network system can dynamicallydetermine a value for each of the available items based on a number ofparameters. The network system can transmit data (e.g., content data) tothe user device of the requesting user that corresponds to the availableitems, the plurality of entities, and/or the determined values for theavailable items. Based on the received data, the user device can displayone or more menus or lists of available items for viewing and selectionby the requesting user. The user device can transmit a request thatincludes the requesting user's selection of one or more selected itemsfrom the available items to the network system.

According to embodiments, the network system can select a first servicemode for the first service in response to determining that no secondservice is scheduled or is in progress (414). In the examples describedherein, the network system can select a first service mode or a secondservice mode. In the first service mode, the network system determines aroute, selects a first service provider from a plurality of serviceproviders, and transmits the route and other information to the firstservice provider to enable the first service provider to fulfill therequested first service. In the second service mode, the network systemcan leverage the scheduled or in-progress second service to fulfill therequested first service. In the second service mode, the network system(or a second system for managing the second service) can update a routeof the second service provider. The updated route includes segments toone or more entities and a segment to the service location. The networksystem (or the second system) can transmit the updated route and otherinformation to the second service provider to fulfill the requestedfirst service.

In certain implementations, the network system can estimate a firstservice duration based on respective preparation times associated withthe one or more selected items (415). The first service duration canindicate an estimated amount of time to fulfill the first service in thefirst service mode. Thus, the first service duration can include thepreparation times of the one or more selected items indicated in therequest for the first service, travel times of the first serviceprovider, etc. The first service duration can be further estimated basedon current or predicted traffic conditions.

The network system can compare the first service duration with thesecond service duration (416). If the first service duration is longerthan the first service duration (e.g., a selected first service provideris estimated to arrive at the service location after the second serviceprovider and/or the requesting user), the network system can select thefirst service mode (418). In contrast, if the first service duration isshorter than the second service duration (e.g., a selected first serviceprovider is estimated to arrive at the service location before thesecond service provider and/or the requesting user), the network systemcan transmit data corresponding to a prompt for a user confirmation tothe user device of the requesting user (417). The user confirmation canbe a confirmation regarding the selection of the second service mode(e.g., re-routing of the second service provider, etc.). If aconfirmation is received, the network system can select the secondservice mode (419). If a confirmation is not received, the networksystem can default to the first service mode (420).

In various aspects, if the network system selects the first service modeat step 420, the network system can optimize the route and/orinformation for the selected first service provider to delay the firstservice provider's arrival at the service location (e.g., toapproximately the same time or after the arrival of the second serviceprovider and/or the requesting user at the service location).

User Device

FIG. 5 is a block diagram illustrating an example user device executingand operating a designated user application for communicating with anetwork service, according to examples described herein. In manyimplementations, the user device 500 can comprise a mobile computingdevice, such as a smartphone, tablet computer, laptop computer, VR or ARheadset device, and the like. As such, the user device 500 can includetypical telephony features such as a microphone 545, a camera 550, and acommunication interface 510 to communicate with external entities usingany number of wireless communication protocols. In certain aspects, theuser device 500 can store a designated application (e.g., a user app532) in a local memory 530. In variations, the memory 530 can storeadditional applications executable by one or more processors 540 of theuser device 500, enabling access and interaction with one or more hostservers over one or more networks 580.

In response to a user input 518, the user app 532 can be executed by aprocessor 540, which can cause an app interface 542 to be generated on adisplay screen 520 of the user device 500. The app interface 542 canenable the user to, for example, view available items offered by nearbyentities. In various implementations, the app interface 542 can furtherenable the user to enter or select a service location (e.g., by enteringan address, performing a search, or selecting on an interactive map).Furthermore, the app interface 542 can display dynamically determinedvalues associated with the available items. The user can generate arequest 567 via user inputs 518 provided on the app interface 542. Forexample, the user can select one or more items from the available itemsin requesting the network service. In some examples, the app interface542 can display one or more suggested or recommended items that areidentified by the network system based on information specific to theuser (e.g., user profile information).

As provided herein, the user application 532 can further enable acommunication link with a network system 590 over the network 580, suchas the network system 100 as shown and described with respect to FIG. 1. The processor 540 can generate user interface features 528 (e.g., map,request status, content cards, etc.) using content data 526 receivedfrom the network system 590 over network 580. Furthermore, as discussedherein, the user application 532 can enable the network system 590 tocause the generated user interface 528 to be displayed on theapplication interface 542.

The processor 540 can transmit the requests 567 via a communicationsinterface 510 to the backend network system 590 over a network 580. Inresponse, the user device 500 can receive a confirmation 569 from thenetwork system 590 indicating the selected service provider that willservice the request 567. In various examples, the user device 500 canfurther include a GPS module 560, which can provide location data 562indicating the current location of the requesting user to the networksystem 590 to, for example, establish the service location.

According to embodiments, the app interface 542 can further display userinterface features indicating or representing a current status of therequest for service. For instance, the app interface 542 can display aprogress bar indicating the current status of the user's request. Theapp interface 542 can also display useful information such as anestimated time of arrival of the selected service provider at theservice location. In addition, the user can enter, via the app interface542, information that may be relevant to the selected service providersuch as a building entry access code, an intercom number or code, acontact phone number of the user, a cross-street etc.

In certain implementations, the local memory 530 can further store asecond app 533 used to submit requests for a second service. Theprocessor 540 is configured to execute instructions corresponding to thesecond app 533. The user app 532 and second app 533 can share datawithin the local memory 530 to exchange information related to thenetwork service and the second service.

Service Provider Device

FIG. 6 is a block diagram illustrating an example service providerdevice executing and operating a designated service provider applicationfor communicating with a network service, according to examplesdescribed herein. In many implementations, the service provider device600 can comprise a mobile computing device, such as a smartphone, tabletcomputer, laptop computer, VR or AR headset device, and the like. Assuch, the service provider device 600 can include typical telephonyfeatures such as a microphone 645, a camera 650, and a communicationinterface 610 to communicate with external entities using any number ofwireless communication protocols. The service provider device 600 canstore a designated application (e.g., a service provider app 632) in alocal memory 630. In response to a service provider input 618, theservice provider app 632 can be executed by a processor 640, which cancause an app interface 642 to be generated on a display screen 620 ofthe service provider device 600. The app interface 642 can enable theservice provider to, for example, accept or reject invitations 692 inorder to service requests throughout a given region.

In various examples, the service provider device 600 can include a GPSmodule 660, which can provide location data 662 indicating the currentlocation of the service provider to the network system 690 over anetwork 680. Thus, the network system 690 can utilize the currentlocation 662 of the service provider to determine whether the serviceprovider is optimally located to service a particular request. If theservice provider is optimal to service the request, the network system690 can transmit an invitation 692 to the service provider device 600over the network 680. The invitation 692 can be displayed on the appinterface 642, and can be accepted or declined by the service provider.If the service provider accepts the invitation 692, then the serviceprovider can provide a service provider input 618 on the displayed appinterface 642 to provide a confirmation 622 to the network system 690indicating that the service provider will follow a route 693 receivedfrom the network system 690 to fulfill the requested service.

Hardware Diagram

FIG. 7 is a block diagram that illustrates a computer system upon whichexamples described herein may be implemented. A computer system 700 canbe implemented on, for example, a server or combination of servers. Forexample, the computer system 700 may be implemented as part of a networkservice, such as described in FIGS. 1 through 6 . In the context ofFIGS. 1 and 2 , the network systems 100 and 200 may be implemented usinga computer system 700 such as described by FIG. 7 . The network systems100 and 200 may also be implemented using a combination of multiplecomputer systems as described in connection with FIG. 7 .

In one implementation, the computer system 700 includes processingresources 710, a main memory 720, a read-only memory (ROM) 730, astorage device 740, and a communication interface 750. The computersystem 700 includes at least one processor 710 for processinginformation stored in the main memory 720, such as provided by a randomaccess memory (RAM) or other dynamic storage device, for storinginformation and instructions which are executable by the processor 710.The main memory 720 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by the processor 710. The computer system 700 may also includethe ROM 730 or other static storage device for storing staticinformation and instructions for the processor 710. A storage device740, such as a magnetic disk or optical disk, is provided for storinginformation and instructions.

The communication interface 750 enables the computer system 700 tocommunicate with one or more networks 780 (e.g., cellular network)through use of the network link (wireless or wired). Using the networklink, the computer system 700 can communicate with one or more computingdevices, one or more servers, one or more databases, and/or one or moreself-driving vehicles. In accordance with examples, the computer system700 receives requests 782 from mobile computing devices of individualusers. The executable instructions stored in the memory 730 can includeprovider routing and selection instructions 722, which the processor 710executes to determine an optimal route and select a service provider toservice the request 782.

The executable instructions stored in the memory 720 can also includecontent generation instructions 724, which enable the computer system700 to access user profiles 726 and other user information in order toselect and/or generate user content 754 for display on the user devices.As described throughout, user content 754 can be generated based oninformation pertaining to the state of the request (e.g., statusinformation). By way of example, the instructions and data stored in thememory 720 can be executed by the processor 710 to implement an examplenetwork system 100 of FIG. 1 . In performing the operations, theprocessor 710 can receive requests 782 and service provider locations784, and submit invitation messages 752 to facilitate the servicing ofthe requests 782. The processor 710 is configured with software and/orother logic to perform one or more processes, steps and other functionsdescribed with implementations, such as described by FIGS. 1 to 4 , andelsewhere in the present application.

Examples described herein are related to the use of the computer system700 for implementing the techniques described herein. According to oneexample, those techniques are performed by the computer system 700 inresponse to the processor 710 executing one or more sequences of one ormore instructions contained in the main memory 720. Such instructionsmay be read into the main memory 720 from another machine-readablemedium, such as the storage device 740. Execution of the sequences ofinstructions contained in the main memory 720 causes the processor 710to perform the process steps described herein. In alternativeimplementations, hard-wired circuitry may be used in place of or incombination with software instructions to implement examples describedherein. Thus, the examples described are not limited to any specificcombination of hardware circuitry and software.

It is contemplated for examples described herein to extend to individualelements and concepts described herein, independently of other concepts,ideas or systems, as well as for examples to include combinations ofelements recited anywhere in this application. Although examples aredescribed in detail herein with reference to the accompanying drawings,it is to be understood that the concepts are not limited to thoseprecise examples. As such, many modifications and variations will beapparent to practitioners skilled in this art. Accordingly, it isintended that the scope of the concepts be defined by the followingclaims and their equivalents. Furthermore, it is contemplated that aparticular feature described either individually or as part of anexample can be combined with other individually described features, orparts of other examples, even if the other features and examples make nomentioned of the particular feature. Thus, the absence of describingcombinations should not preclude claiming rights to such combinations.

What is claimed is:
 1. A network system comprising: one or moreprocessors; one or more memory resources storing instructions that, whenexecuted by the one or more processors, cause the network system to: inresponse to receiving, over a network from a user device of a user, aquery for a first service, determine that a service provider is inprogress of providing or scheduled to provide a second service for theuser; cause the user device to present a first user interface displayinga plurality of entities for selection by the user in connection with thefirst service, the plurality of entities being identified based on a setof information associated with the second service that is in progress orscheduled for the user; in response to receiving a request for the firstservice, determine, based on respective service parameters estimated forthe first service and the second service, whether to select the serviceprovider that is in progress of providing or scheduled to provide thesecond service to fulfill the request for the first service; and inresponse to determining to select the service provider that is inprogress of providing or scheduled to provide the second service for theuser to fulfill the request for the first service, cause the user deviceto present a second user interface for confirming the selection of theservice provider to fulfill the request for the first service.